package com.spark.concurrency.thread.demo;

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

/**
 *  tryLock()方法是有返回值的，它表示用来尝试获取锁，如果获取成功，则返回true，如果获取失败（即锁已被其他线程获取），则返回false，
 *  也就说这个方法无论如何都会立即返回。在拿不到锁时不会一直在那等待。
 *
 *  tryLock(long time, TimeUnit unit)方法和tryLock()方法是类似的
 *  ，只不过区别在于这个方法在拿不到锁时会等待一定的时间，在时间期限之内如果还拿不到锁，就返回false。
 *  如果如果一开始拿到锁或者在等待期间内拿到了锁，则返回true。
 */
public class TryLockTest {
    public static Lock lock = new ReentrantLock();

    public String test() throws Exception {
        if(lock.tryLock()){//尝试获取锁
            try {
                //TODO
                System.out.println("执行，");
            } catch (Exception e) {
                throw new Exception(e);
            } finally {
                lock.unlock();
            }
        }else{
            //不能获取锁
        }
        return null;
    }
}
